package gybase04

/**
 ********************************************************
 * Author: chinadragon
 * Time: 2021/12/26 下午2:41
 * Name:
 * Overview:
 * Usage:
 ********************************************************
 *
 * paython, groovy 是 动态语言、强类型语言；而java kotlin是静态语言
 *
 *
 *
 * 动态特性
 *
 * 动态语言灵活行，但是损失了性能，例如：
 * 循环 ，10000000，Java 只需。0.002秒
 * groovy需要 0.004秒
 *
 *
 */
class User{

    def name = "dragon"
    int age = 20
    String ageStr = "30"

    void setName(String name){
        println "setName(String name)"
        this.name = name
    }

    void setName(Object name){
        println "setName(Object name)"
        this.name = name
    }

}

//def user = new User()
//println user.name.class
//user.name = new Object()
//println user.name.class
//user.name = 123
//println user.name.class
//user.name = new User()
//println user.name.class

//class java.lang.String
//class java.lang.Object
//class java.lang.Integer
//class gybase04.User

/*
    动态特性 最后赋值的时候确定类型
 */

def user = new User()
Object name = "dragon"
println name.class
user.setName(name)
//class java.lang.String
//setName(String name)
name = 123
println name.class
user.setName(name)
//class java.lang.Integer
//setName(Object name)

//user.age = 123
//user.age = "123"//报错如下
//println user.age
/*
    Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '123' with class 'java.lang.String' to class 'int'

    说明groovy是强类型语言
 */

user.ageStr = "123"
user.ageStr = 123//不会报错，因为 可以tostring
println user.age